package com.bw.ssm.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import com.bw.ssm.dao.RedisJavaHash;
import com.bw.ssm.pojo.Goods;
import com.bw.ssm.service.GoodsService;
import com.bw.ssm.util.FilesUtils;

/**
 * 类名: 货物 编辑: 蛋蛋 时间: 2017年12月7日下午2:41:49
 */
@Scope("prototype")
@Controller
@RequestMapping("/admin/goods/")
public class GoodsController {

	@Autowired
	private GoodsService goodsService;

	/**
	 * 方法:跳转到管理首页 编辑:蛋蛋 时间:2017年12月7日下午2:53:16
	 */
	@RequestMapping("toIndex")
	public String toIndex() {
		return "admin/index";
	}

	/**
	 * 方法:跳转到欢迎页面 编辑:蛋蛋 时间:2017年12月7日下午2:53:16
	 */
	@RequestMapping("toWelcome")
	public String toWelcome() {
		return "admin/welcome";
	}

	/**
	 * 方法:商品列表展示 编辑:蛋蛋 时间:2017年12月7日下午3:28:48
	 */
	@RequestMapping("findGoodsList")
	public String findGoodsList(ModelMap map) {

		List<Goods> goodsList = goodsService.findGoodsList();
		// List<GoodsType> goodsTypesList = goodsService.findGoodsTypeList();
		List<Object> goodsTypesList = new ArrayList<Object>();
		Map<String,String> goodsTypesM = RedisJavaHash.get("goodsTypes");
		 map.put("goodsTypesM", goodsTypesM);
		// System.out.println(goodsTypesList);
		map.put("goodsList", goodsList);
		map.put("goodsTypesList", goodsTypesList);
 		return "admin/goods/goods_list";
	}

	/**
	 * 方法:去商品添加页面 编辑:蛋蛋 时间:2017年12月7日下午3:29:18
	 */
	@RequestMapping("toGoodsAdd")
	public String toGoodsAdd(ModelMap map) {
		// List<GoodsType> goodsTypeList = goodsService.findGoodsTypeList();
		// System.out.println(goodsTypeList);
		// map.put("goodsTypeList", goodsTypeList);
		return "admin/goods/goods_insert";
	}

	/**
	 * 方法:添加商品 编辑:蛋蛋 时间:2017年12月7日下午3:31:23
	 */
	@RequestMapping("insertGoods")
	public String insertGoods(Goods goods, HttpServletRequest request,
			MultipartFile file) {

		String imgPath = FilesUtils.FilesUpload_xm(request, file, "//upload");
		goods.setGoodsImg(imgPath);
		goodsService.insertGoods(goods);
		String redirectUrl = "admin/goods/findGoodsList";
		request.setAttribute("redirectUrl", redirectUrl);
		return "admin/closeLayer";
	}

	/**
	 * 方法:去商品修改页面 编辑:蛋蛋 时间:2017年12月7日下午3:31:23
	 */
	@RequestMapping("toGoodsUpdate")
	public String toGoodsUpdate(Goods goods, ModelMap map) {
		// List<GoodsType> goodsTypeList = goodsService.findGoodsTypeList();
		map.put("goods", goodsService.toGoodsUpdate(goods.getGoodsId()));
		// map.put("goodsTypeList", goodsTypeList);
		Map<String,String> goodsTypesM = RedisJavaHash.get("goodsTypes");
		 map.put("goodsTypesM", goodsTypesM);
		return "admin/goods/goods_update";
	}

	/**
	 * 方法:修改商品信息 编辑:蛋蛋 时间:2017年12月7日下午3:31:23
	 */
	@RequestMapping("updateGoods")
	public String updateGoods(Goods goods, HttpServletRequest request,
			MultipartFile file) {
		if (!"".equals(file.getOriginalFilename())) {
			String imgPath = FilesUtils.FilesUpload_xm(request, file,
					"\\upload");
			goods.setGoodsImg(imgPath);
		}
		goodsService.updateGoods(goods);
		String redirectUrl = "admin/goods/findGoodsList";
		request.setAttribute("redirectUrl", redirectUrl);
		return "admin/closeLayer";
	}

	/**
	 * 方法:删除商品 编辑:蛋蛋 时间:2017年12月7日下午3:31:23
	 * 
	 * @throws IOException
	 */
	@RequestMapping("deleteGoods")
	public void deleteGoods(Goods goods, HttpServletResponse response)
			throws IOException {
		Integer count = goodsService.deleteGoods(goods.getGoodsId());
		if (count > 0) {
			response.getWriter().print(true);
		} else {
			response.getWriter().print(false);
		}
	}

	// *************************************************************************************
	public GoodsService getGoodsService() {
		return goodsService;
	}

	public void setGoodsService(GoodsService goodsService) {
		this.goodsService = goodsService;
	}
}
